SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
CREATE PROCEDURE [dbo].[spIniciarTramite] 
@idTramite int
AS
SET NOCOUNT ON
BEGIN TRANSACTION 	
-- Lo primero que se hace es actualizar la tabla tb_TramitesDocumentos
declare @Estado int
Select @Estado = (Select idEstadoTramite from tb_EstadosDeTramites where upper(descripcion) = 'INICIADO')

update tb_TramitesDocumentos set FechaYHoraInicio = getdate(), Estado = @Estado
where idTramite = @idTramite

-- Luego hay que actualizar las tablas de tracking

-- Busca la tarea de inicio del proceso asociado al tramite que se inicia
declare @Tarea int
Select @Tarea = (Select idTarea from tb_Tareas, tb_TramitesDocumentos, tb_TiposDeTareas  where tb_TramitesDocumentos.idTramite = @idTramite 
		and tb_Tareas.Proceso = tb_TramitesDocumentos.Proceso and upper(tb_TiposDeTareas.descripcion) = 'INICIO' 
		and tb_TiposDeTareas.idTipoDeTarea = tb_Tareas.Tipo)

declare @EstadoTracking int
Select @EstadoTracking = (Select idEstadoTracking from tb_EstadosDeTracking where upper(descripcion) = 'EN ESPERA')

insert into tb_Tracking (Tramite, Tarea, NroSubTramite, Hasta, FechaRecepcion, FechaActivacion, Estado, Desde)
values (@idTramite, @Tarea, 1, null, null, null, @EstadoTracking, getdate())

declare @idTracking int
select @idTracking = @@IDENTITY

declare @Paso int
--select @Paso = (Select idPaso from tb_Pasos where tarea = @Tarea and NroOrdenEnTarea = (Select min(NroOrdenEnTarea) from tb_Pasos where tarea = @Tarea))
 
declare Pasos cursor for Select idPaso from tb_Pasos where Tarea = @Tarea order by NroOrdenEnTarea
open Pasos

fetch next from Pasos into @Paso

while @@fetch_status = 0 begin
	insert into tb_TrackingDePasos (Observacion, Paso, Tracking, VistoBueno)
	values (null, @Paso, @idTracking, 'N')
	fetch next from Pasos into @Paso
end	

close Pasos
deallocate Pasos

if @@error = 0
	COMMIT TRANSACTION
else
	ROLLBACK TRANSACTION
GO
